package electronicaDonPepe.comisiones.dataAccess;

import java.io.Serializable;
import java.util.List;

/***
 * Un DAO generico que expone metodos basicos de acceso a datos
 * 
 * @author Adriano
 * 
 * @param <T>
 *            El tipo de la entidad de negocio
 */
public interface Dao<T> {

	/***
	 * Crea un nuevo registro.
	 * @param entity la instancia del objeto de dominio a crear en la DB.
	 * @throws IllegalArgumentException si entity es null.
	 */
	void create(T entity);

	/***
	 * Elimina un registro de la DB
	 * @param entity la entidad a ser eliminada
	 * @throws IllegalArgumentException si entity es null.
	 */
	void delete(T entity);

	void update(T entity);

	List<T> findByExample(T entity);

	T getById(Serializable id);
}
